iT邦幫忙

0

C# 練習 - 在陣列中找出連續重複出現項目(參考黑大使用yield return方式)

c#
JT 2022-12-07 20:15:46721 瀏覽
  • 分享至 

  • xImage
  •  

想法來源:

拜讀黑暗執行緒使用yield return方式後,想說自己可以練習不用yield return的方式暴力破解看看,並記錄自己解題過程。

題目:

從陣列 [A, B, B, C, X, C, C, B, B, D, D, D] 挑出 [B, B][C, C][B, B][D, D, D] 四個群組。

程式碼(使用LINQPad):

	var raw = "A,B,B,C,X,C,C,B,B,D,D,D".Split(','); //測試資料

	var tempList = new List<string>() { raw.First() }; //把第一個字元塞進tempList,當作下一個比較基準

	var outputList = new List<string>(); //最後顯示的list
		
	foreach(var item in raw.Skip(1)) //從第二個字元開始(因為第一個字元已經塞進tempList)
	{
		if (tempList.Last() == item)
        {
            tempList.Add(item);
        }
		else
		{
            if (tempList.Count() > 1) //有兩個以上相同的字元就存進outputList
                outputList.AddRange(tempList);

            tempList.Clear(); //清空tempList
            tempList.Add(item); //再把目前字元存在tempList,當作下一個比較基準
		}
	}
	
    if (tempList.Count() > 1) //有兩個以上相同的字元就存進outputList
        outputList.AddRange(tempList);	

	outputList.Dump("outputList");

結果:

https://ithelp.ithome.com.tw/upload/images/20221207/20129970QWOzWvAWkA.jpg

參考資料來源:
黑暗執行緒 C# 練習 - 在陣列中找出連續重複出現項目


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言